/**
 * 
 */
package com.local.jodatime.jodanormal;

import java.util.Locale;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

/**
 * @author Administrator
 *   时间格式：HH代表24小时制，hh代表12小时制；
 *         分钟使用的是mm,oracle中是mi,这是有区别的；
 *         SSS代表毫秒范围0-999
 *         EE代表星期
 */
public class JodaNormal {

	/**
	 * 日期加n天(可负)
	 * @param days
	 */
	public static void AddDays(int days) {
		DateTime dt = new DateTime(2016, 11, 1, 1, 1, 1, 999);
		System.out.println(dt.plusDays(days).toString("yyyy-MM-dd HH:mm:ss SSS EE"));
	}
	
	/**
	 * 日期加n月(可负)
	 * @param days
	 */
	public static void AddMonth(int months) {
		DateTime dt = new DateTime(2016, 8, 1, 0, 0, 0);
		System.out.println(dt.plusMonths(months).toString("yyyy-MM-dd"));
	}
	
	/**
	 * 日期加n年(可负)
	 * @param days
	 */
	public static void AddYear(int years) {
		DateTime dt = new DateTime(2016, 8, 1, 0, 0, 0);
		System.out.println(dt.plusYears(years).toString("yyyy-MM-dd"));
	}
	
	/**
	 * 
	 * dateTime = dateTime.plusDays(1) // 增加天    ；
                          .plusYears(1)// 增加年    ；
                          .plusMonths(1)// 增加月    ；
                          .plusWeeks(1)// 增加星期    ；
                                                                    。。。；
                          .minusMillis(1)// 减分钟    ；
                          .minusHours(1)// 减小时    ；
                          .minusSeconds(1);// 减秒数  ；
                          .minusMonths(2);// 减月；
	 * 年不变时，请赋值0,反之请放一个正整数或负整数;
	 * 月不变时，请赋值0,反之请放一个正整数或负整数;
	 * 天不变时，请赋值0,反之请放一个正整数或负整数
	 * @param years
	 * @param months
	 * @param days
	 */
	public static void AddMixTime(int years,int months,int days) {
		DateTime dt = new DateTime(2016, 8, 1, 0, 0, 0);
		System.out.println(dt.plusYears(years).plusMonths(months).plusDays(days).toString("yyyy-MM-dd"));
	}
	
	/**
	 * 字符串(有杠/无杠)转换，
	 * oldformat代表原数据格式,格式务必于args一致
	 * newformat代表新数据格式
	 * @param args
	 * @param oldformat
	 * @param newformat
	 */
	public static void StringTimeFormat(String args,String oldformat,String newformat) {
		DateTimeFormatter matter = DateTimeFormat.forPattern(oldformat);  
		//时间解析  
		try{
			 DateTime dateTime = DateTime.parse(args, matter);  
		    System.out.println(dateTime.toString(newformat,Locale.CHINESE));
		}catch(Exception e){
			System.out.println("原数据与原格式请务必一致！");
		}
       
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
          AddDays(30);
          AddMonth(-2);
          AddYear(4);
          AddMixTime(0,1,30);
          StringTimeFormat("20160101","yyyyMMdd","yyyy-MM-dd");
	}

}
